package com.otv.managed.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import org.springframework.dao.DataAccessException;

import com.otv.model.Alojamiento;
import com.otv.model.TipoAlojamiento;
import com.otv.tipoalojamiento.service.ITipoAlojamientoService;


@ManagedBean(name="tipoalojamientoMB")
@RequestScoped
public class TipoAlojamientoManagedBean implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private static final String SUCCESS = "success";
	private static final String ERROR   = "error";
	
	//Spring Service is injected...
	@ManagedProperty(value="#{TipoAlojamientoService}")
	ITipoAlojamientoService tipoAlojamientoService;
	
	List<TipoAlojamiento> tipoAlojamientoList;
	
	private int id;
	private String tipoalojamiento;
	private String descripcion;


	
	
	/**
	 * Add Tipo alojamiento
	 * 
	 * @return String - Response Message
	 */
	public String addTipoAlojamiento() {
		try {
			TipoAlojamiento tipoAlojamiento = new TipoAlojamiento();
			tipoAlojamiento.setId(getId());
			tipoAlojamiento.setTipoAlojamiento(getTipoalojamiento());
			tipoAlojamiento.setDescripcion(getDescripcion());
			
			getTipoAlojamientoService() .addTipoAlojamiento(tipoAlojamiento);

			return SUCCESS;
		} catch (DataAccessException e) {
			e.printStackTrace();
		} 	
		
		return ERROR;
	}
	
	/**
	 * Reset Fields
	 * 
	 */
	public void reset() {
		this.setId(0);
		this.setDescripcion("");
		this.setTipoalojamiento("");
	}
	

	
	
	/**
	 * Get Tipo Alojamiento Id
	 * 
	 * @return int - User Id
	 */
	public int getId() {
		return id;
	}

	/**
	 * Set Tipo Alojamiento Id
	 * 
	 * @param int - User Id
	 */
	public void setId(int id) {
		this.id = id;
	}



	public ITipoAlojamientoService getTipoAlojamientoService() {
		return tipoAlojamientoService;
	}

	public void setTipoAlojamientoService(
			ITipoAlojamientoService tipoAlojamientoService) {
		this.tipoAlojamientoService = tipoAlojamientoService;
	}

	public List<TipoAlojamiento> getTipoAlojamientoList() {
		tipoAlojamientoList = new ArrayList<TipoAlojamiento>();
		tipoAlojamientoList.addAll(getTipoAlojamientoService().getTiposAlojamientos());
		return tipoAlojamientoList;
	}

	public void setTipoAlojamientoList(List<TipoAlojamiento> tipoAlojamientoList) {
		this.tipoAlojamientoList = tipoAlojamientoList;
	}



	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getTipoalojamiento() {
		return tipoalojamiento;
	}

	public void setTipoalojamiento(String tipoalojamiento) {
		this.tipoalojamiento = tipoalojamiento;
	}
	
}